package com.sinsz.wxpn.open.message;

import com.sinsz.wxpn.open.message.support.TemplateData;

import java.util.List;

/**
 * 模板消息接口
 * @author chenjianbo
 * @date 2018-11-14
 */
public interface TemplateMessageService {

    /**
     * 获取模板ID
     * <p>
     *     从模板库新增模板到我的模板中。
     * </p>
     * @param token     接口授权Token
     * @param shortId   模板库中的模板编号
     * @return          返回模板ID
     */
    String fetchTemplateId(String token, String shortId);

    /**
     * 获取我的所有模板列表
     * @param token     接口授权Token
     * @return          模板列表
     */
    String fetchAllTemplate(String token);

    /**
     * 根据我的模板ID删除指定模板
     * @param token         接口授权Token
     * @param templateId    模板ID
     * @return              结果
     */
    String delTemplateById(String token, String templateId);


    /**
     * 发送模板消息
     * @param token                     接口授权token
     * @param toUserOpenid              接收人的Openid
     * @param templateId                模板消息ID
     * @param url                       公众号内跳转链接（可为空）
     * @param miniProgramAppid          公众号关联小程序appid（可为空）
     * @param miniProgramPagePath       公众号关联小程序的页面路径，支持带参数，参考微信公众号开发文档（可为空）
     *                                  <p>
     *                                      注：url和miniprogram都是非必填字段，若都不传则模板无跳转；若都传，会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时，将会跳转至url。
     *                                  </p>
     * @param data                      内容数据
     * @return                          状态和消息ID
     */
    String sendTemplateMessage(String token, String toUserOpenid, String templateId, String url, String miniProgramAppid, String miniProgramPagePath, List<TemplateData> data);

}
